#include <iostream>
#include <iomanip>
#include <thread>  // 用于延迟控制
#include <chrono>  // 用于延迟控制
using namespace std;

// 秒表类
class stopwatch {
public:
    stopwatch() : m_min(0), m_sec(0) {}
public:
    void setzero() { m_min = 0; m_sec = 0; }
    stopwatch run();  // 运行
    stopwatch operator++();  // ++i，前置形式
    stopwatch operator++(int);  // i++，后置形式
    friend ostream& operator<<(ostream&, const stopwatch&);
private:
    int m_min;  // 分钟
    int m_sec;  // 秒钟
};

stopwatch stopwatch::run() {
    ++m_sec;
    if (m_sec == 60) {
        m_min++;
        m_sec = 0;
    }
    return *this;
}

stopwatch stopwatch::operator++() {
    return run();
}

stopwatch stopwatch::operator++(int n) {
    stopwatch s = *this;
    run();
    return s;
}

ostream& operator<<(ostream& out, const stopwatch& s) {
    out << setfill('0') << setw(2) << s.m_min << ":" << setw(2) << s.m_sec;
    return out;
}

int main() {
    stopwatch s;

    while (true) {                                       // 无限循环
        cout << "time now : " << s << endl;               // 输出当前时间
        s++;                                            // 秒表计时
        this_thread::sleep_for(chrono::seconds(1));     // 延迟 1 秒
    }

    return 0;
}